/**
 * 路径配置分析初始处理
 * 
 */

import configVerify from '../configVerify'

/** 当前目录下文件夹下的配置文件路径 */
export const childKeys = []  

// require.context处理
const routeArr = require.context('../router', true, /\.router\.js$/)
const oneKeys = []; // 当前目录下的配置文件路径
routeArr.keys().forEach((key) => {
    const isChildRoute = key.replace('./', '').includes('/') // 是否子文件夹下的路由配置
    isChildRoute ? childKeys.push(key) : oneKeys.push(key);
})

/** 一级路由配置信息*/
export const oneConfigs = oneKeys.map(key => getConfig(key)).sort((a, b) => a.order - b.order)


/**
 * 获取配置化信息, 配置验证
 * @param {string} url 文件地址，用于获取默认导出配置
 * @returns 
 */
export function getConfig(url) {
    const config = routeArr(url).default
    const newConfig = perfectConfig(config, url)
    configVerify(newConfig)
    return newConfig
}


/**
 * 完善配置信息，
 * @param {object} oldConfig 默认导出的配置
 * @returns 返回完善的配置
 */

export function perfectConfig(oldConfig) {
    return Object.assign({}, { componentsFileName: oldConfig.name, children: [], noAside: false, meta: {} }, oldConfig)
}

